Technical Q&A JAVA14
Properties versus methods in automatically generated 'aete' resources


Q: I am using AppleScript for Java and I have a routine that shows up as a property instead of a method in the automatically generated 'aete' resource.

My method:

public void
setDictionaryName( String name ){...}

Shows up in the AppleScript dictionary as:

Properties:
<Inheritance>
Object [r/o]
dictionary name
string -- public void foo.setDictionaryName(String)

I was expecting the dictionary to look like this:

MyClass:
setDictionaryName: public voidfoo.setDictionaryName(String)
setDictionaryName reference
parameters string

Why is this happening?

A: If you have a method that uses the standard Java bean syntax for property accessor routines (i.e., methods that are in the format setX(), getX(), or isX() where X is a property name), the introspector will assume that the routines are class properties.

The method you declared looks like a routine for setting the value of the dictionaryName property, so it is interpreted as a property accessor function. As a result, the default behavior for the automatic terminology generator creates an entry in the dictionary in the property format instead of a method format.

This behavior may actually be preferred since it is a lot easier to script an application as:

set dictionary name of foo 1 to "English Language"

compared to:

setDictionaryName of foo 1 parameters { "English Language" }

[May 17 1999]


Developer Documentation | Technical Notes | Development Kits | Sample Code